/**
 * 
 */
package it.agm.fanta.asynctask.util;

import it.agm.activity.dialog.GenericDialog;
import it.agm.fanta.FantaserviceApp;
import it.agm.fanta.asynctask.jersey.patch.Callback;
import it.agm.fanta.asynctask.jersey.patch.NetworkHandler;
import it.agm.fanta.constants.Constants;
import it.agm.fanta.model.FormazioneLegaRead;
import it.agm.fanta.model.Giocatore;
import it.agm.fanta.model.Marcatore;
import it.agm.fanta.model.Partita;
import it.agm.fanta.model.Partite;
import it.agm.fanta.model.Squadra;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * @author alberto
 *
 */
public class SyncUtility {
	/**
	 * 
	 */
	public static void syncForLega() {
		if(NetworkHandler.checkConnection(FantaserviceApp.getAppContext())){
			NetworkHandler networkHandler = NetworkHandler.getInstance();
			String url = Constants.URL_REST 	+ Constants.SERVICE_CLASSIFICA;
			networkHandler.write(url, Squadra[].class, FantaserviceApp.squadre,
				new Callback<Squadra[]>() {
					@Override
					public void callback(Squadra[] squadre) {
						FantaserviceApp.squadre = squadre;
					}
				});
			url = Constants.URL_REST 	+ Constants.SERVICE_GIORNATA_LEGA;
			Partite[] partiteTmp = null ;
			networkHandler.write(url, Partite[].class, partiteTmp,
					new Callback<Partite[]>() {
						@Override
						public void callback(Partite partite[]) {
							FantaserviceApp.partite = partite[0];
						}
					});
			url = Constants.URL_REST 	+ Constants.SERVICE_FANTA_MARCATORI;
			Marcatore[] marcatoriTmp = null ;
			networkHandler.write(url, Marcatore[].class, marcatoriTmp,
					new Callback<Marcatore[]>() {
						@Override
						public void callback(Marcatore marcatori[]) {
							ArrayList<Marcatore> list = new ArrayList<Marcatore>();
							list = new ArrayList<Marcatore>(Arrays.asList(marcatori));
							FantaserviceApp.marcatori = list;
							
						}
					});
			url = Constants.URL_REST 	+ Constants.SERVICE_ROSA;
			Giocatore[] giocatoriTmp = null ;
			networkHandler.write(url, Giocatore[].class, giocatoriTmp,
					new Callback<Giocatore[]>() {
						@Override
						public void callback(Giocatore giocatori[]) {
							ArrayList<Giocatore> list = new ArrayList<Giocatore>();
							list = new ArrayList<Giocatore>(Arrays.asList(giocatori));
							FantaserviceApp.rosa = list;
							
						}
					});
			url = Constants.URL_REST 	+ Constants.SERVICE_GIORNATA_LEGA;
			Partite[] partiteCorrentiTmp = null ;
			FantaserviceApp.request.setGiornataincorso(true);
			networkHandler.write(url, Partite[].class, partiteCorrentiTmp,
					new Callback<Partite[]>() {
						@Override
						public void callback(Partite partite[]) {
							FantaserviceApp.partite = partite[0];
							for (Partita partita : FantaserviceApp.partite.getPartite()) {
								if(partita.getSquadracasa().equals(FantaserviceApp.lega.getNomesquadra())
										|| partita.getSquadratrasferta().equals(FantaserviceApp.lega.getNomesquadra())){
									FantaserviceApp.partitaLive = partita;
									break;
								}
							}
						}
					});
			FantaserviceApp.request.setGiornataincorso(false);
			url = Constants.URL_REST 	+ Constants.SERVICE_FORMAZIONE;
			FormazioneLegaRead[] formazione = null ;
			
			FantaserviceApp.formazioneReaded = null;
			if(NetworkHandler.checkConnection(FantaserviceApp.getAppContext())){
			networkHandler.write(url, FormazioneLegaRead[].class, formazione,
				new Callback<FormazioneLegaRead[]>() {
					@Override
					public void callback(FormazioneLegaRead[] formazione) {
						if(formazione != null && formazione.length>0){
							List<Giocatore> list = formazione[0].getCalciatoreFormazioneLega();
							FantaserviceApp.dettaglio = formazione[0].getDettaglioFormazioneLega();
							FantaserviceApp.formazioneReaded= (ArrayList<Giocatore>) list;
						}
						
					}
				});
			}
		}else{
			new GenericDialog(FantaserviceApp.currentActivity(), "Errore di connessione","ERROR");
		}
	}
}
